/************************************************************************
                        Nurbs.h - Copyright Claudio Botta

This library is free software; you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or 
(at your option) any later version.
This library is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
License for more details.

You should have received a copy of the GNU Lesser General Public License 
along with this library; if not, write to the 
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 
Boston, MA 02110, USA

This file was generated on Sam Mär 15 2008 at 10:58:12
The original location of this file is geomagick/Nurb.h
**************************************************************************/


#ifndef NURB_H
#define NURB_H
#define WITH_OPENGL
#include "BaseType.h"

#include <string>
#include <vector>
#include <nurbs++/nurbsS.h>
#include <nurbs++/vector.h>
#include <nurbs++/nurbsGL.h>
//#include <matrix/point_nd.h>

namespace geomagick{

class NurbsSurface;
/**
  * class Nurbs
  */

class Nurbs : public BaseType
{
public:

  // Constructors/Destructors
  //  
	Nurbs();
	

  // Static Public attributes
  //  

  // Public attributes
  //  


  // Public attribute accessor methods
  //  


  // Public attribute accessor methods
  //  


protected:

  // Static Protected attributes
  //  

  // Protected attributes
  //  

public:


  // Protected attribute accessor methods
  //  

protected:

public:


  // Protected attribute accessor methods
  //  

protected:


private:

  // Static Private attributes
  //  

  // Private attributes
  //  
  PLib::NurbsSurfacef* NurbsNurbsSurface;
  //PLib::NurbsSurfaceGL* NurbsNurbsSurfaceGL;
  //vector<float> UKnot;
  //vector<float> VKnot;




public:
   virtual void printName(){cout << "Nurbs \n";}

   static BaseType* init(){return (new Nurbs);}
   static string getTypeName(){return "Nurbs";}
   static BaseTypeId* getTypeId(){BaseTypeId* newBaseTypeId = new BaseTypeId; 
					newBaseTypeId->getTypeName = Nurbs::getTypeName;
					newBaseTypeId->init = Nurbs::init; 
					return newBaseTypeId;}

  // Private attribute accessor methods
  // 
 void setUKnot(vector<float> & argUKnot);
 void setVKnot(vector<float> & argVKnot);
 PLib::NurbsSurfacef* getNurbs();
 void draw();
 


private:

public:


  // Private attribute accessor methods
  //  

private:



};
}
#endif // NURB_H
